package com.mapper;

import com.po.Course;
import com.po.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserMapper {

    public List<User>  selectAllUser();
    public int count();

    public void updateUser(User user);
    public void del_user(long id);


    /**
     * 用户登录
     *
     * @param user 封装了用户名和密码
     * @return 登录成功，返回数据库中的User对象
     */
    User login(User user);

    /**
     * 用户注册
     *
     * @param user 即将注册的用户对象
     */
    void register(User user);

    /**
     * 根据用户ID查找对应的用户
     *
     * @param userId 用户ID
     * @return 用户ID不存在返回NULL，否则返回对应的User对象
     */
    User findById(@Param(value = "userId") long userId);

    /**
     * 获取user选修的所有course信息
     *
     * @param userId 用户ID
     * @param start  分页的开始页码
     * @param end    分页的结束页码
     * @return 用户选修的课程信息
     */
    List<Course> getCourses(@Param(value = "userId") long userId,
                            @Param(value = "start") int start, @Param(value = "end") int end);

    /**
     * 获取user选修的所有event信息
     *
     * @param userId 用户ID
     * @param start  分页的开始页码
     * @param end    分页的结束页码
     * @return 用户选修的课程信息
     */
    List<Course> getEvents(@Param(value = "userId") long userId,
                           @Param(value = "start") int start, @Param(value = "end") int end);

    /**
     * 更新用户密码
     *
     * @param userId   changed user Id
     * @param password new password
     */
    void updatePassword(@Param(value = "userId") long userId, @Param(value = "password") String password);

    int getTotalCourseNum();

    int getTotalEventsNum();
}